#!/usr/bin/env node

/**
 * 简单的Agent架构测试
 * 直接测试游戏管理Agent的功能
 */

async function testGameManagerAgent() {
  console.log('🎮 测试游戏管理Agent...\n');
  
  try {
    // 测试基本的HTTP连接
    console.log('1. 测试服务器连接...');
    const response = await fetch('http://localhost:4111/api');
    if (response.ok) {
      console.log('✅ 服务器连接正常');
    } else {
      throw new Error('服务器连接失败');
    }
    
    // 测试Agent列表
    console.log('\n2. 测试Agent可用性...');
    try {
      const agentsResponse = await fetch('http://localhost:4111/api/agents');
      if (agentsResponse.ok) {
        const agents = await agentsResponse.json();
        console.log('✅ 可用的Agents:', Object.keys(agents || {}));
        
        if (agents && agents.gameManagerAgent) {
          console.log('✅ 游戏管理Agent已注册');
        } else {
          console.log('⚠️ 游戏管理Agent未找到，但其他Agent可用');
        }
      } else {
        console.log('⚠️ 无法获取Agent列表，但服务器运行正常');
      }
    } catch (error) {
      console.log('⚠️ Agent列表获取失败，但服务器运行正常');
    }
    
    // 测试直接Agent调用
    console.log('\n3. 测试Agent调用...');
    try {
      const agentResponse = await fetch('http://localhost:4111/api/agent/run', {
        method: 'POST',
        headers: {
          'Content-Type': 'application/json',
        },
        body: JSON.stringify({
          agentId: 'gameManagerAgent',
          messages: [
            {
              role: 'user',
              content: '请开始一个简单难度的推理游戏，主题是办公室，3个嫌疑人。请使用 game-management 工具执行 start_game 操作。'
            }
          ]
        })
      });
      
      if (agentResponse.ok) {
        const result = await agentResponse.json();
        console.log('✅ Agent调用成功');
        console.log('响应:', JSON.stringify(result, null, 2));
        
        if (result.toolCalls && result.toolCalls.length > 0) {
          console.log('✅ 工具调用成功');
          const gameData = result.toolCalls[0].result;
          if (gameData && gameData.success) {
            console.log('✅ 游戏创建成功');
            console.log('游戏ID:', gameData.data?.gameId);
            console.log('案件标题:', gameData.data?.caseData?.case?.title);
          } else {
            console.log('⚠️ 游戏创建失败，但Agent响应正常');
          }
        } else {
          console.log('⚠️ 没有工具调用，但Agent响应正常');
          console.log('文本响应:', result.text);
        }
      } else {
        console.log('❌ Agent调用失败:', agentResponse.status, agentResponse.statusText);
      }
    } catch (error) {
      console.log('❌ Agent调用异常:', error.message);
    }
    
    console.log('\n🎉 测试完成！');
    
  } catch (error) {
    console.error('❌ 测试失败:', error.message);
  }
}

// 检查服务器状态
async function checkServer() {
  try {
    const response = await fetch('http://localhost:4111/api');
    return response.ok;
  } catch (error) {
    return false;
  }
}

async function main() {
  console.log('🚀 Agent架构简单测试\n');
  
  const serverRunning = await checkServer();
  if (!serverRunning) {
    console.log('❌ 服务器未运行，请先启动服务器:');
    console.log('   npm run build && node --import=./.mastra/output/instrumentation.mjs .mastra/output/index.mjs');
    process.exit(1);
  }
  
  await testGameManagerAgent();
}

main().catch(console.error);
